package com.example.weixin_01.test.design_model.factory.simpleFactory;

/**
 * 简单工厂
 */
public class VideoFactory {
    //通过反射的形式获取实例
    public Video getVideo(Class clazz){
        Video video = null;
        //获取类名，通过反射的方式来获取这个实例
        try {
            try {
                //通过反射的形式获取这个类名
                video = (Video)Class.forName(clazz.getName()).newInstance();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return video;
    }

    //通过类型的形式获取这个实例
    public Video getVideoByType(String type){
        Video video = null;
        if (type.equals("java")) return new JavaVideo();
        if (type.equals("python")) return new PythonVideo();
        return null;
    }
}
